Rails guides facelift, two new official gems and more! | This Week in Rails
https://world.hey.com/this.week.in.rails/rails-guides-facelift-two-new-official-gems-and-more-81ce2e04
Ruby on Rails — Rails Guides get a facelift
Rails Guidesのデザインが大幅に変わりますよ、というお知らせです
新しいデザインは Edge Guides https://edgeguides.rubyonrails.org/ に反映されています
不具合の指摘や要望の提案は rails/rails · Discussions · GitHub にてお願いします
これは Ruby on Rails Forum と並行してGitHub Discussionsを試しに運用してみる試みでもあります
Two new official gems / X
DHHさんによってRailsの公式なgemが新たに2つ紹介されています
GitHub - rails/solid_queue: Database-backed Active Job backend
GitHub - rails/mission_control-jobs: Dashboard and Active Job extensions to operate and troubleshoot background jobs
Solid Queueについて
ActiveJobのキューイングライブラリの1つです
Railsガイドの「Active Job の基礎#ジョブを実行する」に記載があるとおり、ジョブの登録と実行にはキューイングのバックエンドを用意する必要があります
キューイングのバックエンドの機能を提供してくれるのがキューイングライブラリです
Sidekiq、Resque、Delayed Jobなどが有名ですね
SidekiqとResqueはデータストアはRedisです
Sidekiq from: https://github.com/sidekiq/sidekiq?tab=readme-ov-file#requirements
Redis: Redis 6.2+ or Dragonfly 1.13+
Resque from: https://github.com/resque/resque?tab=readme-ov-file#additional-information
Resque requires Redis
Delayed Jobはデータストア(のMapper)をいくつかの中から選べます
from: https://github.com/collectiveidea/delayed_job/wiki/Backends
"ActiveRecord":https://github.com/collectiveidea/delayed_job_active_record (DJ 3.0+)
"DataMapper":https://github.com/collectiveidea/delayed_job_data_mapper
"IronMQ":https://github.com/iron-io/delayed_job_ironmq/tree/v3
"Mongoid":https://github.com/collectiveidea/delayed_job_mongoid
"MongoMapper":https://github.com/thisduck/delayed_job_mongo_mapper (DJ 3.0+, MongoMapper 0.11.0+)
"MongoMapper":https://github.com/smtlaissezfaire/delayed_job_mongo_mapper (DJ 4.1+, MongoMapper >= 0.13.1)
"NoBrainer":https://github.com/eilers/delayed_job_nobrainer (ORM for RethinkDB)
Solid Queueは、ActiveRecordの利用が前提となっています
データストアとしてリレーショナルデータベースを使えるということですね
現時点ではMySQL、PostgreSQL、SQLiteのいずれかをサポートしています
MySQL v8以上、または、PostgreSQL v9.5以上を使う場合、FOR UPDATE SKIP LOCKED句を使ってジョブのポーリング時にブロックやロックの待機を回避するように実装されているため、高いパフォーマンスが見込めるとのことです
DHHさんからは「Solid Queueがデフォルトのキューイングライブラリになること」を期待されています
Mission Control - Jobs について
ActiveJobのキューイングバックエンドの管理画面を提供するライブラリです
待機中のジョブの閲覧や、失敗したジョブの再実行・破棄などができます
現時点で対応しているキューイングライブラリはResqueとSolid Queueの2つだけです
たとえばSidekiqにはWeb UIが同梱されているので管理画面は不要ですもんね
Eliminate remaining uses of lease_connection inside Active Record by casperisfine · Pull Request #51353 · rails/rails · GitHub
ActiveRecordに関する変更です
lease_connectionメソッドをwith_connectionメソッドに書き換える対応をしています
lease_connectionメソッドについては第10回で紹介しているので詳しくはそちらを聴いてみてください
#010: Active Record Query Interface, Rails World, MuPDFPreviewer, ConnectionPool - tanaken on Rails - LISTEN
Illustrator file preview, deprecations and more! | This Week in Rails#65ec042c4492e80000abb6ce
with_connectionメソッドについては第7回で紹介しているので詳しくはそちらを聴いてみてください
#007: Rails World 2024, devcontainer, ActiveRecord::Base.with_connection - tanaken on Rails - LISTEN
Rails World CFP, ActiveRecord::Base.with_connection, devcontainer and puma-dev support and more! | This Week in Rails#65cff38f4492e8000034e03a